#/bin/bash
# per afegir macs a l'arxiu de macs
# metode d'entrada: afegir.sh <ip o mac> <data>
# format de la Mac: 00:00:00:00:00:00
# format de la data caducitat: YYYY-MM-DD/HH

# Importem valors de l'arxiu variables.xrx
user=`grep user_mysql /etc/xarxeta/variables.xrx`
user=${user:11}
pass=`grep pass_mysql /etc/xarxeta/variables.xrx`
pass=${pass:11}
rangip=`grep rang_ip_00 /etc/xarxeta/variables.xrx`
rangip=${rangip:11}

var1=$1
data=$2
xnmap=""
esmac="True"
esip="False"
esdata="True"
data_actual=""
data_actual=$(date +"%Y-%m-%d %H:%M:%S")

# Comprovació de que no hi ha cap entrada en blanc
if [[ (-z $1) ]]
then
	echo "Llons... manca la MAC o la IP!!!"
	esmac="False"
	esip="False"
	esdata="False"
else
	if [[ (-z $data) ]]
	then
		echo "Llons... manca l'hora de caducitat... cunnyaaaaat!!!"
		esdata="False"
	fi
fi

# Si hi ha data (per tant, hi ha IP o MAC i data)
if [[ $esdata == "True" ]]
then
	# Comprovació de que és una MAC, i ben formatada
	i=0
	j=0
	while [ $i -le 16 ]
	 do
		if [[ esmac="True" ]]
		then
			let "j=((i+1)/3)*3-1"
			if [[ $i == $j ]]
			then
				if [[ ${var1:$i:1} != ":" ]]
				then
					esmac="False"
				fi	
			else
			if ! [[ ($(echo "${var1:$i:1}" | grep -E "^[0-9]")) || ($(echo "${var1:$i:1}" | grep -E "^[a-f]")) || ($(echo "${var1:$i:1}" | grep -E "^[A-F]")) ]]
				then
					esmac="False"
				fi
			fi
		fi
		(( i++ ))
	done
	# Si no és una Mac, validem que sigui una IP ben formatada
	if [[ ($esmac == "False") && (${var1:0:10} == $rangip) ]]
	then
		esip="True"
		i=10
		while [ $i -le 12 ]
		do
			if ! [[ $(echo "${var1:$i:1}" | grep -E "^[0-9]") || (${var1:$i:1} == "")]]
			then
				esip="False"
				i=12
			fi
			(( i++ ))
		done
		if [[ $esip == "True" ]]
		then
			if ! [[ (${var1:10} -le 254) && (${var1:10} -ge 1) ]]
			then
				esip="False"
			fi
		fi
	fi
fi

#Si el format de la IP o la Mac són correctes, comprovem la data
if [[ ($esmac == "True") || ($esip == "True") ]]
then
	if [[ (${data:4:1} == "-") && (${data:7:1} == "-") && (${data:10:1} == "/") ]]
	then
		i=0
		while [ $i -le 12 ]
		do
			if ! [[ ($i == 4) || ($i == 7) || ($i == 10) ]]
			then
				if ! [[ $(echo "${data:$i:1}" | grep -E "^[0-9]") ]]
				then
					esdata="False"
				fi
			fi
			(( i++ ))
		done
	else
		esdata="False"
	fi
fi



# Festa grossa: si la data és bona i té MAC, afegim la MAC i la data a l'arxiu
# Si la data és bona i té IP, cerquem la MAC des de la IP i afegim la MAC i la data a l'arxiu
if [[ $esdata == "True" ]]
then
	if [[ $esip == "True" ]]
	then
		var1=`nmap $var1 | grep 'MAC Address'`
		var1=${var1:13:17}
		if ! [[ -z $var1 ]]
		then
			echo "insert into x_actius values (NULL, 'afegir.sh', '$var1', '$data_actual', '$data')" | mysql -u $user -p$pass -D xarxeta
				/etc/init.d/rules.sh
		else
			echo "Tenim la IP i no podem pas trobar la MAC!!"
		fi
	else

		if [[ $esmac == "True" ]]
		then

		echo "insert into x_actius values (NULL, 'afegir.sh', '$var1', '$data_actual', '$data')" | mysql -u $user -p$pass -D xarxeta
			/etc/init.d/rules.sh
		else
			echo "MAC i/o IP malformades!!!"
		fi
	fi
else
	echo "Data incorrecta"
fi
